package com.hengpeng.itfinoss.service;

import java.util.LinkedHashMap;
import java.util.List;

import com.hengpeng.common.exception.ServiceResult;
import com.hengpeng.common.persist.entity.AbstractEntity.BoolValue;
import com.hengpeng.common.persist.query.model.Order.OrderType;
import com.hengpeng.common.scheduling.entity.SystemJob;
import com.hengpeng.common.scheduling.entity.SystemJob.SystemJobState;

/**
 * <pre>
 * TODO 系统作业服务接口
 * </pre>
 * @author pengfangliang
 * @version 1.0, 2010-9-19
 */
public interface SystemJobService
{

	/**
	 * <pre>
	 * 检查任务 如果不存在，则创建
	 * </pre>
	 * @param className
	 * @param taskName
	 * @param taskDescription
	 * @return
	 */
	public SystemJob checkJob(String className, String taskName, String taskDescription);

	public void execOverSystemJob(String className, boolean isSuccess, int runCount);

	public ServiceResult<SystemJob> execSystemJob(String className, int timeout);
	
	/**
	 * 
	 * <pre>
	 * 初始化
	 * </pre>
	 * @return
	 */
	int resetitfinossSystemJob();
	
	/**
	 * <pre>
	 *  根据系统作业className类名查询系统作业
	 * </pre>
	 * @param className 系统作业className类名
	 * @return
	 */
	SystemJob getSystemJobByClassName(String className);
	
	
	/**
	 * <pre>
	 *  修改系统作业
	 * </pre>
	 * @param sysJob 系统作业
	 * @return
	 */
	ServiceResult<SystemJob> update(SystemJob sysJob);

	/**
	 * <pre>
	 *  分页查询系统作业
	 * </pre>
	 * @param taskName 作业名称
	 * @param desc 作业描述
	 * @param canRun 是否可运行
	 * @param lastRunHostName 最后运行的主机名
	 * @param runState 当前运行状态
	 * @param pageIndex 当前页号
	 * @param pageSize 每页显示记录数
	 * @param sortMap 排序集合
	 * @return
	 */
	ServiceResult<List<SystemJob>> selectSystemJobPage(String taskName, String desc, BoolValue canRun,
			String lastRunHostName, SystemJobState runState, Integer pageIndex, Integer pageSize,
			LinkedHashMap<String, OrderType> sortMap);

	ServiceResult<Long> selectSystemJobCount(String taskName, String desc, BoolValue canRun, String lastRunHostName,
			SystemJobState runState);

}
